﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using BibliotecaProjeto.atendente;

namespace BibliotecaProjeto.atendente
{
    public class DadosAtendente : persistencia.ConexaoSqlServer
    {
        #region Atributos
        private string instSql;
        #endregion

        #region Construtores
        /// <summary>
        /// Construtor da Classe
        /// </summary>
        #endregion
        public DadosAtendente() { }

        #region Métodos
        #region conexão com select
        public List<Atendente> selectAtendente()
        {
            List<Atendente> retorno = new List<Atendente>();
            try
            {
                abrirConexao();
                SqlCommand cmd = new SqlCommand("SELECT matricula,nome,login,senha FROM atendente ", conBD);
                SqlDataReader DbReader = cmd.ExecuteReader();

                while (DbReader.Read())
                {
                    Atendente at = new Atendente();
                    at.matricula = DbReader.GetInt32(DbReader.GetOrdinal("matricula"));
                    at.nomeAtendente = DbReader.GetString(DbReader.GetOrdinal("nome"));
                    at.login = DbReader.GetString(DbReader.GetOrdinal("login"));
                    at.senha = DbReader.GetString(DbReader.GetOrdinal("senha"));
                    retorno.Add(at);
                }

                DbReader.Close();
                cmd.Dispose();
                fecharConexao(); ;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao conectar e selecionar " + ex.Message);
            }
            return retorno;
        }
        #endregion


        public void cadastrar(Atendente atendente)
        {
            try
            {
                SqlCommand cmd = conBD.CreateCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "inserirAtend";

                cmd.Parameters.Add(new SqlParameter("@nome", atendente.nomeAtendente));
                cmd.Parameters.Add(new SqlParameter("@login", atendente.login));
                cmd.Parameters.Add(new SqlParameter("@senha", atendente.senha));

                cmd.Prepare();
                abrirConexao();
                cmd.ExecuteNonQuery();
                fecharConexao();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public void atualizar(Atendente atendente)
        {
            try
            {
                abrirConexao();
                instSql = "update atendente set login = '" + atendente.login + "', senha = '" + atendente.senha + "' where matricula = '" + atendente.matricula + "'";
                fecharConexao(); ;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao atualizar atendente: " + ex.Message);
            }
        }


        public void remover(Atendente atendente)
        {
            try
            {
                abrirConexao();
                instSql = "delete from atendente where matricula = '" + atendente.matricula + "'";
                fecharConexao(); ;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao remover atendente: " + ex.Message);
            }
        }



        //método buscarAtendente
        public List<Atendente> buscar(Atendente a)
        {
            List<Atendente> retorno = new List<Atendente>();


            try
            {
                abrirConexao();

                SqlCommand cmd = conBD.CreateCommand();

                cmd = new SqlCommand("SELECT atd_matricula,atd_nome FROM atendente where atd_matricula = @matricula", conBD);

                cmd.Parameters.Add("@matricula", SqlDbType.Int);
                cmd.Prepare();
                cmd.Parameters["@matricula"].Value = a.matricula;

                SqlDataReader DbReader = cmd.ExecuteReader();

                if (DbReader.HasRows)
                {
                    while (DbReader.Read())
                    {

                        a.matricula = DbReader.GetInt32(DbReader.GetOrdinal("atd_matricula"));
                        a.nomeAtendente = DbReader.GetString(DbReader.GetOrdinal("atd_nome"));
                        retorno.Add(a);
                    }
                }
                else
                    MessageBox.Show("Nenhum resultado encontrado");

                DbReader.Close();
                cmd.ExecuteNonQuery();
                fecharConexao();

            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao conectar: " + ex.Message);

            }

            return retorno;

        #endregion
        }
    }
}